"""Реализуем стек с помощью класс deque изи библиотеки collections
    Шаров И.Ю."""
from collections import deque

class Stack:
    """Класс Стек со стандартным функционалом"""
    def __init__(self):
        self.stack = deque()  # используем колоду или двусторонняя очередь


    def pop(self):
        """Метод удаляющий верхний элимент. Стек изменяется.
            Метод возвращает верхний элимент стека"""
        if len(self.stack) == 0:
            return None
        return self.stack.pop()


    def push(self, item):
        """Метод добавляющий элимент на верншину стека.
            Метод ничего не возвращает"""
        self.stack.append(item)


    def is_empty(self):
        """Метод проверки стека на пустоту.
        Должен возращать True или False"""
        if len(self.stack) == 0:
            return True
        elif len(self.stack) > 0:
            return False


    def peek(self):
        """Метод возращает верхний элимент стека, но не удаляет его.
            Стек не меняется"""
        if len(self.stack) == 0:
            return None
        element = self.stack[-1]
        return element



def check_stack(text):
    """Метод проверки скобок
    Возвращает True если все скобки парные
    False - если нет
    """
    stack = Stack()
    for ch in text:
        if ch in "({[":
            stack.push(ch)
        if ch in "})]":
            s = stack.pop()
            if (ch == ")" and s == "("):
                pass
            else:
                return False
        break
    if stack.is_empty():
        return True


print(check_stack('(((())))'))
